package com.pmt.feedplayer.platform

import com.pmt.feedplayer.data.PlaybackState
import com.pmt.feedplayer.data.PlaybackProgress
import kotlinx.coroutines.flow.Flow

/**
 * 跨平台播放器接口
 * 使用 expect/actual 模式在各平台实现
 */
expect interface Player {
    /**
     * 播放状态流
     */
    val playbackStateFlow: Flow<PlaybackState>
    
    /**
     * 播放进度流
     */
    val progressFlow: Flow<PlaybackProgress>
    
    /**
     * 错误信息流
     */
    val errorFlow: Flow<String>
    
    /**
     * 设置播放源
     */
    fun setDataSource(url: String)
    
    /**
     * 开始播放
     */
    fun play()
    
    /**
     * 暂停播放
     */
    fun pause()
    
    /**
     * 跳转到指定位置
     */
    fun seekTo(position: Long)
    
    /**
     * 设置音量
     */
    fun setVolume(volume: Float)
    
    /**
     * 释放播放器资源
     */
    fun release()
    
    /**
     * 获取播放器视图的平台特定实现
     */
    fun getPlayerView(): Any?
}

/**
 * 创建平台特定的播放器实例
 */
expect fun createPlayer(): Player